home *** CD-ROM | disk | FTP | other *** search
-
- ;==========================================================================;
- ; 8530 SCC Hardware constants -- Paccomm Board ;
- ;==========================================================================;
-
- ;--------------------------------------------------------------------------;
- ; Modem and SCC address locations ;
- ;--------------------------------------------------------------------------;
-
- scc_modem EQU 0 ; Modem control port
-
- scca_ctl EQU 6 ; SCC Channel A control port
- scca_data EQU 7 ; SCC Channel A data port
- sccb_ctl EQU 4 ; SCC channel B control port
- sccb_data EQU 5 ; SCC Channel B data port
-
- ;--------------------------------------------------------------------------;
- ; Masks to find things ;
- ;--------------------------------------------------------------------------;
-
- scc_card_mask EQU 0FF0H ; Mask to obtain card address from port address
- scc_chan_mask EQU 0010B ; Mask to check what channel this is from port
- scc_data_mask EQU 0001B ; "OR" this in to get the data port!
-
- scc_int_mask EQU 1000B ; Mask to find the channel in the
- ; interrupt vector
-
- ;--------------------------------------------------------------------------;
- ; SCC registers ;
- ;--------------------------------------------------------------------------;
-
- sccreg0 EQU 0 ; SCC register 0
- sccreg1 EQU 1 ; SCC register 1
- sccreg2 EQU 2 ; SCC register 2
- sccreg3 EQU 3 ; SCC register 3
- sccreg4 EQU 4 ; SCC register 4
- sccreg5 EQU 5 ; SCC register 5
- sccreg6 EQU 6 ; SCC register 6
- sccreg7 EQU 7 ; SCC register 7
- sccreg8 EQU 8 ; SCC register 8
- sccreg9 EQU 9 ; SCC register 9
- sccreg10 EQU 10 ; SCC register 10
- sccreg11 EQU 11 ; SCC register 11
- sccreg12 EQU 12 ; SCC register 12
- sccreg13 EQU 13 ; SCC register 13
- sccreg14 EQU 14 ; SCC register 14
- sccreg15 EQU 15 ; SCC register 15
-
- ;==========================================================================;
- ; SCC read registers ;
- ;==========================================================================;
-
- ;--------------------------------------------------------------------------;
- ; Read Register 0 -- Tx/Rx and External Flag masks ;
- ;--------------------------------------------------------------------------;
-
- rx_abort EQU 10000000B ; Receive break/abort
- tx_unrun EQU 01000000B ; Transmit underrun
- cts_pin EQU 00100000B ; SCC CTS pin
- rx_hunt EQU 00010000B ; sync/hunt flag
- dcd_pin EQU 00001000B ; SCC DCD pin
- tx_tbe EQU 00000100B ; Transmit buffer empty
- zero_cnt EQU 00000010B ; Baud-rate gen. zero count
- rx_rda EQU 00000001B ; Receive data available
-
- ;--------------------------------------------------------------------------;
- ; Read Register 1 -- Receive Condition Flag ;
- ;--------------------------------------------------------------------------;
-
- rx_eof EQU 10000000B ; Receive End of frame
- rx_crcerr EQU 01000000B ; CRC/framing error flag
- rx_ovrn EQU 00100000B ; RX overrun error flag
- rx_parity EQU 00010000B ; RX parity error flag
- rx_resid EQU 00001110B ; Residual data code
- tx_allsent EQU 00000001B ; Transmit all-sent flag (async)
-
- ;--------------------------------------------------------------------------;
- ; Read Register 2 holds the Interrupt Vector, if used ;
- ; Channel A holds the base value of the vector, while ;
- ; the Channel B value may include status modifications ;
- ;--------------------------------------------------------------------------;
-
- ;--------------------------------------------------------------------------;
- ; Read Register 3. Interrupt pending flags ;
- ; Channel A only, Channel B is always zero ;
- ;--------------------------------------------------------------------------;
-
- a_rx_ip EQU 00100000B ; Channel A Rx interrupt pend.
- a_tx_ip EQU 00010000B ; Channel A Tx interrupt pend.
- a_ext_ip EQU 00001000B ; Channel A External int. pend.
- b_rx_ip EQU 00000100B ; Channel B Rx interrupt pend.
- b_tx_ip EQU 00000010B ; Channel B Tx interrupt pend.
- b_ext_ip EQU 00000001B ; Channel B External int. pend.
-
- ;--------------------------------------------------------------------------;
- ; Read Register 8 is the data register, which is usually accessed directly ;
- ;--------------------------------------------------------------------------;
-
- ;--------------------------------------------------------------------------;
- ; Read Register 10. Misc. status flags ;
- ;--------------------------------------------------------------------------;
-
- clk1_mis EQU 10000000B ; One clock missing (FM mode)
- clk2_mis EQU 01000000B ; Two clock missing (FM mode)
- loop_snd EQU 00010000B ; Loop sending (SDLC)
- on_loop EQU 00000010B ; On loop flag (SDLC)
- ; EQU ..0.00.0B ; Bits not used
-
- ;--------------------------------------------------------------------------;
- ; Read Register 12 is low half baud rate divider ;
- ;--------------------------------------------------------------------------;
- ; Read Register 13 is high half baud rate divider ;
- ;--------------------------------------------------------------------------;
- ; Read Register 15 shows what is in write register 15 ;
- ;--------------------------------------------------------------------------;
-
- ;==========================================================================;
- ; SCC Write Registers ;
- ;==========================================================================;
-
- ;--------------------------------------------------------------------------;
- ; Write Register 0. Reg. pointers and Master Bits ;
- ; There are two commands hidden in this register ;
- ;--------------------------------------------------------------------------;
-
- ; EQU xx......B ; First command bits
- ; EQU 00......B ; Null
- rst_rcrc EQU 01000000B ; Reset RX CRC checker
- rst_tcrc EQU 10000000B ; Reset Tx CRC generator
- rst_eom EQU 11000000B ; Reset Tx end-of-msg Flag
-
- ; EQU .....xxxB ; Second command bits
- ; EQU ..000...B ; Null
- pnt_high EQU 00001000B ; Point high command
- rst_ext EQU 00010000B ; Reset external/status interrupt
- tx_abort EQU 00011000B ; Transmit an abort in SDLC
- nxt_rxen EQU 00100000B ; Enable int. on next Rx char
- rst_txip EQU 00101000B ; Reset Tx Interrupt pending
- rst_err1 EQU 00110000B ; Reset error Flags in Reg 1
- rst_ius EQU 00111000B ; Reset highest Int. service
-
- ; EQU .....xxxB ; Select another register
-
- ;--------------------------------------------------------------------------;
- ; Write Register 1. (Tx/Rx Interrupt and DMA) ;
- ;--------------------------------------------------------------------------;
-
- dma_enab EQU 10000000B ; Wait/DMA request enable
- dma_rqst EQU 01000000B ; Wait/DMA request function
- dma_txrx EQU 00100000B ; Wait/DMA on Rx or TX
-
- ; ...xx...B ; Receiver Interrupt setting
- rxi_none EQU 00000000B ; None
- rxi_frst EQU 00001000B ; Int on first RX and special cond
- rxi_all EQU 00010000B ; Int on all Rx and special cond
- rxi_spcl EQU 00011000B ; Int on RX special cond only
-
- par_spcl EQU 00000100B ; Parity is special RX condition
- txi_enab EQU 00000010B ; Tx Interrupt Master Enable
- exi_enab EQU 00000001B ; External Interrupt Enable
-
- ;--------------------------------------------------------------------------;
- ; Write Register 2 contains the Interrupt Vector ;
- ;--------------------------------------------------------------------------;
-
- ;--------------------------------------------------------------------------;
- ; Write Register 3. Rx parameters and control ;
- ;--------------------------------------------------------------------------;
-
- ; xx......B ; Set receive bits per character
- rx_5bits EQU 00000000B ; RX 5 bits/char default = 00
- rx_7bits EQU 01000000B ; RX 7 bits per character
- rx_6bits EQU 10000000B ; RX 6 bits per character
- rx_8bits EQU 11000000B ; RX 8 bits per character
-
- autoenab EQU 00100000B ; Enable auto mode DCD and CTS
- hunt_on EQU 00010000B ; Turn on hunt mode in RX
- rx_crcon EQU 00001000B ; Turn on RX crc checker
- adsearch EQU 00000100B ; Turn on address search in SDLC
- sync_inh EQU 00000010B ; Sync load inhibit flag
- rx_enabl EQU 00000001B ; Master RX enable flag
-
- ;--------------------------------------------------------------------------;
- ; Write Register 4. Tx/Rx misc parameters and modes ;
- ;--------------------------------------------------------------------------;
-
- ; EQU xx......B ; Clock mode bits
- x1_clck EQU 00000000B ; X1 clock mode default 00
- x16_clck EQU 01000000B ; X16 clock mode
- x32_clck EQU 10000000B ; X32 clock mode
- x64_clck EQU 11000000B ; X64 clock mode
-
- ; ..xx....B ; Sync mode
- sync_8b EQU 00000000B ; 8 bit sync mode default 00
- sync_16b EQU 00010000B ; 16 bit sync character
- sync_sdl EQU 00100000B ; SDLC sync mode
- sync_ext EQU 00110000B ; External sync mode
-
- ; ....xx..B ; Stop bits
- sync_mod EQU 00000000B ; SYNC mode default by 00
- stop_1bt EQU 00000100B ; 1 stop bit in async mode
- stop_15b EQU 00001000B ; 1.5 stop bits in async mode
- stop_2bt EQU 00001100B ; 2 stop bits in async mode
-
- even_par EQU 00000010B ; Parity mode even/*odd
- enab_par EQU 00000001B ; Enable parity check/gen.
-
- ;--------------------------------------------------------------------------;
- ; Write Register 5. TX parameters and commands ;
- ;--------------------------------------------------------------------------;
-
- dtr_pin EQU 10000000B ; SCC DTR pin set
-
- ; .xx.....B ; Transmit bits per character
- tx_5bits EQU 00000000B ; Tx 5 bits/char default 00
- tx_7bits EQU 00100000B ; Tx 7 bits per character
- tx_6bits EQU 01000000B ; Tx 6 bits per character
- tx_8bits EQU 01100000B ; Tx 8 bits per character
-
- tx_break EQU 00010000B ; Send a break character
- tx_enabl EQU 00001000B ; master transmit enable
- tx_crc16 EQU 00000100B ; CRC16/*SDLC CRC mode
- rts_pin EQU 00000010B ; SCC RTS pin set
- tx_crcen EQU 00000001B ; Transmit CRC enable
-
- ;--------------------------------------------------------------------------;
- ; Write Register 6 is the address field in SDLC mode ;
- ;--------------------------------------------------------------------------;
- ; Write Register 7 is loaded with sync byte, Flag in SDLC ;
- ;--------------------------------------------------------------------------;
- ; Write Register 8 is Tx data register ;
- ;--------------------------------------------------------------------------;
-
- ;--------------------------------------------------------------------------;
- ; Write Register 9. Master Interrupt control register ;
- ;--------------------------------------------------------------------------;
-
- ; xx......B ;
- ; 00......B ; Null
- chbreset EQU 01000000B ; Channel B reset
- chareset EQU 10000000B ; Channel A reset
- sccreset EQU 11000000B ; Master chip hardware reset
-
- ; 00100000B ; Not used
- int_hilo EQU 00010000B ; interrupt status *lo/hi
- int_enab EQU 00001000B ; Master chip interrupt enable
- dis_lowr EQU 00000100B ; Disable lower interrupt chain
- no_vectr EQU 00000010B ; No interrupt vector from SCC
- enab_vis EQU 00000001B ; enable vector-includes-status
-
- ;--------------------------------------------------------------------------;
- ; Write Register 10. Misc. Tx/Rx control bits ;
- ;--------------------------------------------------------------------------;
-
- crc_1or0 EQU 10000000B ; CRC preset to one or zero
-
- ; .xx.....B ; Mode select
- nrz_mode EQU 00000000B ; Set mode to NRZ
- nrzimode EQU 00100000B ; Set mode to NRZI
- fm1_mode EQU 01000000B ; Set mode to FM1
- fm0_mode EQU 01100000B ; Set mode to FM0
-
- act_poll EQU 00010000B ; Go active on poll in SDLC loop
- idl_mark EQU 00001000B ; Mark/*Flag while Tx idle
- und_abrt EQU 00000100B ; Abort/*Flag on Tx underrun
- sdlcloop EQU 00000010B ; Set SDLC loop mode
- sync_8_6 EQU 00000001B ; 6bit/*8bit sync mode
-
- ;--------------------------------------------------------------------------;
- ; Write Register 11. Clock control register ;
- ;--------------------------------------------------------------------------;
-
- xtal_osc EQU 10000000B ; Use internal xtal oscillator
-
- ; .xx.....B ; Rx clock
- rxc_rtxc EQU 00000000B ; Rx clock from RTXC pin
- rxc_trxc EQU 00100000B ; Rx clock from TRXC pin
- rxc_brg EQU 01000000B ; Rx clock from baud rate generator
- rxc_dpll EQU 01100000B ; Rx clock from DPLL
-
- ; ...xx...B ; Tx clock
- txc_rtxc EQU 00000000B ; Tx clock from RTXC pin
- txc_trxc EQU 00001000B ; Tx clock from TRXC pin
- txc_brg EQU 00010000B ; Tx clock from baud rate generator
- txc_dpll EQU 00011000B ; Tx clock from DPLL out
-
- trxc_out EQU 00000100B ; TRXC pin is an *in/out
-
- ; ......xxB ; TXRC pin select
- trxc_xtl EQU 00000000B ; TRXC pin out from XTAL OSC
- trxc_txc EQU 00000001B ; TRXC pin out from Tx clock
- trxc_brg EQU 00000010B ; TRXC pin out from BRG
- trxc_dpl EQU 00000011B ; TRXC pin out from DPLL
-
- ;--------------------------------------------------------------------------;
- ; Write Register 12 is the low half of the Baud Rate Generator ;
- ;--------------------------------------------------------------------------;
- ; Write Register 13 is the hi half of the Baud Rate Generator ;
- ;--------------------------------------------------------------------------;
-
- ;--------------------------------------------------------------------------;
- ; Write Register 14. Misc mode and control bits ;
- ;--------------------------------------------------------------------------;
-
- ; xxx.....B ; DPLL mode
- ; 000.....B ; Null
- dpllsrch EQU 00100000B ; DPLL enter search mode
- rst_mclk EQU 01000000B ; Reset missing clock latches
- dpll_dis EQU 01100000B ; Disable DPLL, force search mode
- dpll_brg EQU 10000000B ; Set DPLL source to baud rate gen
- dpll_rtx EQU 10100000B ; Set DPLL source to RTXC pin
- mod_fm EQU 11000000B ; Set operating mode to FM
- mod_nrzi EQU 11100000B ; Set operating mode to NRZI
-
- lcl_loop EQU 00010000B ; Local loop-back mode TxD to RxD
- autoecho EQU 00001000B ; Auto-echo mode (RxD = TxD + RxD)
- dtr_func EQU 00000100B ; REQ/*DTR DTR pin function
- brg_clck EQU 00000010B ; SCC/*RXTC clock baud-rate-gen in
- enab_brg EQU 00000001B ; Enable baud-rate-generator
-
- ;--------------------------------------------------------------------------;
- ; Write Register 15. External/status interrupt control ;
- ;--------------------------------------------------------------------------;
-
- rxie_brk EQU 10000000B ; Rx Break/abort detect Int. enable
- txie_eom EQU 01000000B ; Tx EOM/underrun Int. enable
- cts_ie EQU 00100000B ; CTS pin interrupt enable
- hunt_ie EQU 00010000B ; SYNC/HUNT interrupt enable
- dcd_ie EQU 00001000B ; Carrier detect interrupt enable
- brg0_ie EQU 00000010B ; Baud-rate-gen. zero count int. enab
- ; .....0.0B ; Not used